package com.sky.service;


import com.sky.DTO.TurnoverStatisticsDTO;
import com.sky.vo.OrderReportVO;
import com.sky.vo.SalesTop10ReportVO;
import com.sky.vo.UserReportVO;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;

public interface ReportService {
    /**
     * 获取营业额统计数据:获取订单状态为已完成的订单的总金额和下单时间的统计数据
     * @param begin
     * @param end
     * @return
     */
    TurnoverStatisticsDTO turnoverStatistics(LocalDate begin, LocalDate end);

    /**
     * 查询用户统计数据(获取下单用户的统计数据包括新增用户和用户总数)
     * @param begin
     * @param end
     * @return
     */
    UserReportVO userStatistics(LocalDate begin, LocalDate end);

    /**
     * 获取订单统计的数据,所有日期的订单总数,所有日期的有效订单数,每个日期的订单总数,每个日期的有效订单数,订单统计的日期列表,订单完成率=有效订单数/总订单数*100%
     *
     * @param begin
     * @param end
     * @return
     */
    OrderReportVO ordersStatistics(LocalDate begin, LocalDate end);

    /**
     * 获取时间范围内商品名称列表和各个商品的销售数量列表
     * @param begin
     * @param end
     * @return
     */
    SalesTop10ReportVO top10(LocalDate begin, LocalDate end);

    /**
     * 业务:查询近30天的运营数据,并导入Excel文件,然后把Excel文件通过响应输出流,写回前端,下载到浏览器
     * @param response
     */
    void exportOperationalDataReports(HttpServletResponse response);
}
